<?php

class UserController extends \BaseController {

	public $restful = true;

	/**
	 * Display a listing of the resource.
	 *
	 * @return Response
	 */
	public function index()
	{
		// se obtiene la lista de usuarios
		$usersList = User::orderBy('usr_id', 'desc')->get();
		// ->select('name', 'email')

		return Response::json($usersList);
		/*
		return Response::json(
			array (
				'error' => false,
				'users' => $users
			),
			200
		);
		*/

		// dd(VAR); // Dump the passed variables and end the script.
	}


	/**
	 * Show the form for creating a new resource.
	 *
	 * @return Response
	 */
	public function create()
	{
		return Response::json(User::get());
	}


	/**
	 * Store a newly created resource in storage.
	 *
	 * @return Response
	 */
	public function store(){
		$user = new User;

		$user->name = Input::json('name');
		$user->lastname = Input::json('lastname');
		$user->username = Input::json('username');
		$user->password = Hash::make(Input::json('password'));
		$user->birthday = Input::json('year') . '-' . Input::json('month') . '-' . Input::json('day');
		$user->gender = Input::json('gender');
		$user->cou_id = Input::json('cou_id');
		
		$user->save();

		return Response::json($user);
	}


	/**
	 * Display the specified resource.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function show($id)
	{
		$user = User::find($id);
		$user->password = '';
		
		$birthday = explode('-', $user->birthday);
		$user->day = (int) $birthday[2];
		$user->month = (int) $birthday[1];
		$user->year = (int) $birthday[0];

		return Response::json($user);
	}


	/**
	 * Show the form for editing the specified resource.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function edit($id)
	{
		//
	}


	/**
	 * Update the specified resource in storage.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function update($id)
	{
		//$user = DB::table('user')->where('usr_id', 3)->first();
		
		$user = User::find($id);

		if (Input::json('name')) {
			$user->name = Input::json('name');
		}

		/*$user = User::find($id);


		if (Input::json('lastname')) {
			$user->lastname = Input::json('lastname');
		}
		
		if (Input::json('username')) {
			// se verifica que el usuario no exista previamente
			// por hacer

			$user->username = Input::json('username');
		}

		if (Input::json('password')) {
			$user->password = Hash::make(Input::json('password'));
		}

		if (Input::json('year') && Input::json('month') && Input::json('day')) {
			// se verifica que la fecha sea válida
			// por hacer

			$user->birthday = Input::json('year') . '-' . Input::json('month') . '-' . Input::json('day');
		}

		if (Input::json('gender')) {
			$user->gender = Input::json('gender');
		}
		
		if (Input::json('cou_id')) {
			$user->cou_id = Input::json('cou_id');
		}
		
		*/
		$user->save();

		return Response::json($user);
	}


	/**
	 * Remove the specified resource from storage.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function destroy($id)
	{
		//
	}

	/**
	*	@description
	*	Función responsable de validar la existencia del un nuevo 
	*	nombre de usuario ("username") en la aplicación.
	*
	*	@param string $username, representa el nuevo nombre de
	*	usuario a validar.
	*	@return boolean, true: el usuario existe, false: el usuario 
	*	no existe
	*/
	public function checkUsernameExists() {
		// se asume el peor de los casos, que el nombre de usuario exista
		$response = array(
            'error' => true,
            'usernameExists' => true
        );
		// se obtiene el nombre de usuario
		$username = trim(Input::get("username"));

		// se consulta la cantidad de usuarios con el mismo "username"
		$usersCount = User::where('username', $username)->count();

		// si la cantidad de usuarios es "0", quiere decir q el "username" esta disponible
		if ($usersCount == 0) {
			$response['usernameExists'] = false;
		}

		return Response::json($response);
	}

}
